package com.sync;

/**
 * 这样的写法是保证了线程安全，但是由于getInstance()方法做了同步处理，synchronized将导致性能开销。
 * 如getInstance()方法被多个线程频繁调用， * 将会导致程序执行性能的下降。反之，如果getInstance()
 * 方法不会被多个线程频繁的调用，那么这个方案将能够提供令人满意的性能。
 * Created by 峥桂 on 2017/6/6.
 */
public class UnsafeLazyInitiallization02 {
    private static UnsafeLazyInitiallization02 instance;
    private UnsafeLazyInitiallization02() {}

    public synchronized  static UnsafeLazyInitiallization02 getInstance() {
        if (instance == null) {   //1:A线程执行
            instance = new UnsafeLazyInitiallization02();  //2:B线程执行
        }
        return instance;

    }
}
